###Function###
Run

###Description###
Startet ein externes Programm.

###Syntax###
Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )


###Parameters###
@@ParamTable@@
program
	Der komplette Pfad des Programms (.EXE, .BAT, .COM oder .PIF), das ausgefhrt werden soll. (siehe Bemerkungen)
workingdir
	[optional] Der Pfad, in dem das Programm ausgefhrt werden soll (Arbeitsverzeichnis). Leerstring ("") gibt das aktuelle Arbeitsverzeichnis an. Dies ist nicht der Pfad des Programms.
show_flag
	[optional] Das "show"- (Sichtbarkeits-) Flag des auszufhrenden Programms:
		@SW_HIDE = verstecktes Fenster (alternative Eingabe: default).
		@SW_MINIMIZE = minimiertes Fenster.
		@SW_MAXIMIZE = maximiertes Fenster.
opt_flag
	[optional] Steuert verschiedene Optionen, die die Interaktion zwischen Parent- und Child-Prozess betreffen (STDIO).
		0x1 ($STDIN_CHILD)  = Stellt ein Handle zum STDIN-Stream des Child-Fensters bereit
		0x2 ($STDOUT_CHILD) = Stellt ein Handle zum STDOUT-Stream des Child-Fensters bereit.
		0x4 ($STDERR_CHILD) = Stellt ein Handle zum STDERR-Stream des Child-Fensters bereit.
		0x8 ($STDERR_MERGED) = Stellt das selbe Handle fr den STDOUT- und STDERR-Stream bereit (Setzt $STDOUT_CHILD und $STDERR_CHILD).
		0x10 ($STDIO_INHERIT_PARENT) = Stellt dem Child-Fenster das Handle zum STDIO-Stream des Parent-Fensters bereit. Kann nicht mit einem anderen STDIO-Flag kombiniert werden. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.
		0x10000 ($RUN_CREATE_NEW_CONSOLE) = Der Child-Kommandozeilenprozess wird in einem eigenen Kommandozeilenfenster ausgefhrt. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.
@@End@@

###ReturnValue###
@@ReturnTable@@
Erfolg:	Die PID des Prozesses, der gestartet wurde.
Fehler:	0 und setzt @error ungleich Null.
@@End@@


###Remarks###
Pfade mit Leerzeichen mssen in Anfhrungszeichen gesetzt werden.

Um DOS- (Konsolen-) Kommandos auszufhren, sollte man folgendes ausprobieren: 
<i><a href="Run.htm">Run</a>(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)	;Nicht die Leerzeichen vor und nach "/c" vergessen!</i>

Nach dem Start des angeforderten Programms wird das Skript weiter ausgefhrt. Soll die Ausfhrung des Skripts angehalten werden, bis das gestartete Programm beendet ist, so ist statt der <a href="Run.htm">Run</a> Funktion die <a href="RunWait.htm">RunWait()</a> Funktion zu verwenden.

Das Bereitstellen der Standard-I/O-Parameter mit den geeigneten Werten ist Voraussetzung fr die Interaktion des Child-Prozesses mit den Funktionen <a href="StderrRead.htm">StderrRead()</a>, <a href="StdinWrite.htm">StdinWrite()</a> und <a href="StdoutRead.htm">StdoutRead()</a>.
Um mehrere I/O-Streams zu verwalten, kombiniert man die Flag-Werte (oder man benutzt $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD, die in Constants.au3 definiert sind).

Um die I/O-Streams zu schlieen, mssen folgende Bedingungen erfllt sein: 
1) Der Child-Prozess hat seine Seite des Streams geschlossen (das ist der Fall, wenn der Child-Prozess geschlossen wird). 
2) AutoIt muss gekaperte Streams auslesen, bis keine Daten mehr enthalten sind.  
3) Wenn STDIN dem Child-Prozess zugewiesen ist, muss <a href="StdinWrite.htm">StdinWrite()</a> aufgerufen werden, um den Stream zu schlieen. Sobald alle Streams als nicht mehr bentigt erkannt werden, werden alle intern verwendeten Ressourcen automatisch freigegeben.
<a href="StdioClose.htm">StdioClose()</a> kann verwendet werden, um das Schlieen der STDIO-Streams zu erzwingen.


###Related###
RunWait, RunAs, RunAsWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdoutRead, StdioClose, ProcessClose, ConsoleRead


###Example###
@@IncludeExample@@
